// 给你一个整数数组 nums ，请你找出一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。
// 子数组 是数组中的一个连续部分。

//动态规划表格
//要找出子序列的最优解  首先要找出每个位置的最优解  如果钱一个位置是负数的话那现在位置的最优解就是他本身  如果前一个位置是正数的话 那么该位置的最优解就是该位置本身加上前一个位置的值，最后取出最大的最优解

function maxSubArray(nums: number[]): number {
    for(let i = 1;i<nums.length;i++){
        if(nums[i - 1] > 0){
            nums[i] = nums[i] + nums[i - 1]
        }
    }
    return Math.max(...nums)
};


console.log(maxSubArray([-2,1,-3,4,-1,2,1,-5,4]))